const { max } = require("moment")

const arr = [3, 6, 1, 8, 3, 10]

function sort(arr) {
    for (let i = 0; i < arr.length - 1; i++) {
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[i] > arr[j]) {
                let temp = arr[i]
                arr[i] = arr[j]
                arr[j] = temp
            }
        }
    }
    return arr
}

// 选择排序
function sectionSort(arr) {
    for (let i = 0; i < arr.length - 1; i++) {
        let minIdx = i
        for (let j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[minIdx]) {
                minIdx = j
            }
        }
        if (minIdx !== i) {
            [arr[i], arr[minIdx]] = [arr[minIdx], arr[i]]
        }
    }
    return arr

}

// 计数排序(非负数)
function counterSort(arr) {
    // max是传入数组中的最大数
    let max = Math.max(...arr)
    let counter = new Array(max + 1).fill(0)
    for (let i = 0; i < arr.length; i++) {
        counter[arr[i]]++
    }
    let res = []
    for (let i = 0; i < counter.length; i++) {
        while (counter[i]-- > 0) {
            res.push(i)
        }
    }
    return res
}

console.log(sort(arr))
console.log(sectionSort(arr))
console.log(counterSort(arr))
